home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=O Guardiπo (bruno_mga@hotmail.com) Title=Cinema - PTGate Description=Movie importation script for :: Cinema - PTGate :: Site=www.cinema.ptgate.pt Language=PT Version=1.3 (8 Fev 2005) Requires=3.5.0 Comments=Script feito por O Guardiπo (bruno_mga@hotmail.com) para o site "www.cinema.ptgate.pt" | License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program PTGate; var MovieName: string; MovieURL: string; function HTMLRemove(Value: String): String; begin HTMLDecode(Value); HTMLRemoveTags(Value); Value := Trim(Value); result := Value; end; procedure AnalyzeFilmPage(Address: String); var Page : TStringList; Line, Value : string; LineNr, BeginPos, EndPos: Integer; url_imdb:string; nome_orig:string; nome_trad:string; ano:string; pais:string; genero:string; realizac:string; Interpretes:string; descricao:string; capa:string; begin Page := TStringList.Create; Address:='http://cinema.ptgate.pt/filme.php?code='+Address; Page.Text := GetPage(Address); SetField(fieldURL, Address); //obter nome do filme LineNr := FindLine('</b><br><b class=subtitle>', Page, 0); if LineNr<>-1 then begin Value := Page.GetString(LineNr); BeginPos:= pos('<b class=title>',value)+15; EndPos := pos('</b><br>', value)+8; nome_orig:=copy(value,BeginPos,EndPos-BeginPos); //por o the no principio do nome if pos(', The</b>',nome_orig) <>0 then begin url_imdb:=HTMLRemove(nome_orig); nome_orig:= StringReplace(nome_orig, ', The</b><br>', ''); nome_orig:=HTMLRemove(nome_orig); nome_orig:='The '+Copy(nome_orig,1,length(nome_orig)); end; nome_orig:=HTMLRemove(nome_orig); SetField(fieldOriginalTitle, nome_orig); end; //obter nome traduzido BeginPos := pos('<b class=subtitle>', value)+18; value:= Copy(value,BeginPos,length(value)); EndPos := pos('</b>',value); nome_trad:=Copy(value,1,EndPos); nome_trad:=HTMLRemove(nome_trad); SetField(fieldTranslatedTitle, nome_trad); value:=Copy(value,EndPos,length(value)); //ano BeginPos := pos('<br><br><b>', value)+22; value:= Copy(value,BeginPos,length(value)); EndPos := pos('<br><br><b>',value); ano:=Copy(value,1,EndPos); ano:=HTMLRemove(ano); SetField(fieldYear, ano); value:=Copy(value,EndPos,length(value)); //paφs BeginPos := pos('<br><b>paφs</b><br>', value)+19; value:= Copy(value,BeginPos,length(value)); EndPos := pos('<br><br><b>',value); pais:=Copy(value,1,EndPos); pais:=HTMLRemove(pais); SetField(fieldCountry, pais); value:=Copy(value,EndPos,length(value)); //gΘnero BeginPos := pos('<br><b>gΘnero</b><br>', value)+21; value:= Copy(value,BeginPos,length(value)); EndPos := pos('<br><br><b>',value); genero:=Copy(value,1,EndPos); genero:=HTMLRemove(genero); SetField(fieldCategory, genero); value:=Copy(value,EndPos,length(value)); //realizaτπo BeginPos := pos('<br><br><b>realizaτπo</b><br>', value)+29; value:= Copy(value,BeginPos,length(value)); EndPos := pos('<br><br><b>',value); realizac:=Copy(value,1,EndPos); realizac:=HTMLRemove(realizac); SetField(fieldDirector, realizac); value:=Copy(value,EndPos,length(value)); //intΘrpretes BeginPos := pos('<br><br><b>intΘrpretes</b><br>', value)+30; value:= Copy(value,BeginPos,length(value)); EndPos := pos('<br><br><b>',value); Interpretes:=Copy(value,1,EndPos); Interpretes:= StringReplace(Interpretes, '<br>', ', '); Interpretes:=HTMLRemove(Interpretes); SetField(fieldActors, Interpretes); value:=Copy(value,EndPos,length(value)); //descriτπo BeginPos := pos('<br><br><b>sinopse</b><br>', value)+26; if BeginPos<>26 then begin value:= Copy(value,BeginPos,length(value)); EndPos := pos('<br><br><br>',value); descricao:=Copy(value,1,EndPos); descricao:=HTMLRemove(descricao); SetField(fieldDescription, descricao); end; //capa LineNr := FindLine('width=100 height=150>', Page, 0); Value := Page.GetString(LineNr); BeginPos:=pos('<img src=',value)+10; EndPos:=pos(' width=100 height=150>',value)-1; value:=Copy(value,BeginPos,EndPos-BeginPos); value:='http://cinema.ptgate.pt/'+value; GetPicture(Value); end; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; procedure AnalyzePage(Address: string); var Page: TStringList; LineNr, StartPos, EndPos: Integer; Line: string; x:integer; MovieAddress, findMovieName,linedown : string; guardar,url, nome_filme:string; begin PickTreeClear; Page := TStringList.Create; Page.Text := GetPage(Address); if (pos('Nπo foram encontrados filmes ou pessoas que satisfaτam a sua pesquisa.', Page.Text)<>-1) then //se existe begin LineNr := FindLine('filme.php?code=', Page, LineNr); Line := Page.GetString(LineNr); repeat StartPos := pos('filme.php?code=', Line)+15; if StartPos=15 then break; guardar:=Copy(line,StartPos+1,9999); line:=Copy(line,StartPos,9999); StartPos := pos('>',line)+1; url:=(copy(line,1,StartPos-3)); EndPos := pos('</a>',line)-1; line := copy(Line, StartPos, EndPos - StartPos+1); nome_filme:=line; PickTreeAdd(nome_filme, url); line:=guardar; until (nome_filme=''); if PickTreeExec(Address) then AnalyzeFilmPage(Address); Page.Free; end end; begin PickListClear; MovieName := GetField(fieldOriginalTitle); if Input('Importar do cinema.ptgate.pt', 'Escreva o nome do filme:', MovieName) then begin //espaτo nπo sπo permitidos MovieName := StringReplace(MovieName, ' ', '%20'); AnalyzePage('http://cinema.ptgate.pt/pesquisa.php?pesquisa='+MovieName); end; end.